Network storage, also referred to as network storage systems or data storage systems, is computer data storage connected to a computer network providing data access to heterogeneous clients. Typically, network storage systems process a large amount of Input/Output (IO) requests, and high availability, speed, and reliability are desirable characteristics of network storage. In addition to processing read and write IO requests, network storage systems need to perform other background operations required for maintaining these systems, such as garbage collection of obsolete data and compaction of data (e.g., merging contents of two half-filled segments into one full segment), creating snapshots of data, backup, and replication procedures, etc.
However, a networked storage device having hierarchical schedulers may be unbalanced from an initial configuration or through inactive devices, which results in disparate load patterns. For example, some volumes may receive bursty IOs while others may receive consistent IOs. A sudden burst on one volume can impact other volumes. Because of the unbalanced configuration of schedulers, distribution of resources may also be unbalanced. For example, a number of active child schedulers of a first parent scheduler may be greater than the number of active child schedulers of a second parent scheduler at the same level. This unbalancing of child schedulers between two different parent schedulers causes an unfair allocation of resources, such that child scheduler of the second parent scheduler will receive a higher share of resources than the child schedulers of the first parent scheduler.
What are needed are a network storage device, software, and systems that provide for fair utilization of system resources to enable a storage system to process IOs with high performance.
It is in this context that embodiments arise.